package com.xjh.basestudy.designmode.behaviorMode.behaviorMode8_Command.p2_command;

/**
 * @Author XuJianHua
 * @Date 2022/10/5 20:08
 * @Description 开关类：注入命令对象，调用命令对象得方法
 *
 * 开关类Switcher不再引入任何灯泡对象，取而代之的是第3行持有的命令接口Command，并在第6行提供了命令设置方法setCommand()，以实现命令的任意设置。
 * 之后我们在按钮操作方法中进行事件绑定，其中第11行的按下按钮方法buttonPush()对应命令的执行方法exe()，而第16行的弹起按钮方法buttonPop()则对应命令的反向执行方法unexe()。
 * 至此，命令模块以接口以及实现类的方式被成功地植入开关控制器芯片。
 */
public class Switcher {

    private Command command;

    // 设置命令
    public void setCommand(Command command) {
        this.command = command;
    }

    // 按钮事件绑定
    public void buttonPush() {
        System.out.println("按下按钮……");
        command.exe();
    }

    public void buttonPop() {
        System.out.println("弹起按钮……");
        command.unexe();
    }

}